[Go언어] gorilla websocket request origin 에러
websocket: request origin not allowed by Upgrader.CheckOrigin 위 에러 발생시 upgrader.CheckOrigin = func(r *http.Request) bool { return true } 위 코드를 추가해준다. 필요에 따라 origin check 로직을 추가해주면 된다.
websocket: request origin not allowed by Upgrader.CheckOrigin 위 에러 발생시 upgrader.CheckOrigin = func(r *http.Request) bool { return true } 위 코드를 추가해준다. 필요에 따라 origin check 로직을 추가해주면 된다.
클로저(closure) 함수를 일급객체로 취급하는 함수형 프로그래밍 언어(Erlang, Scala, Haskell 등)에서 사용되는 중요한 특성이다.클로저에 대해 MDN은 아래와 같이 정의하고 있다. “A closure is the combination of a function and the lexical environment within which that function was declared.” “클로저는 함수와 그 함수가 선언된 렉시컬 환경의 조합이다.” 아래의 예제를 먼저 확인해 보자 package main func outerFunc() func() { x := 10 innerFunc := func() { fmt.Println(x) } return innerFunc } func main() { f := outerFunc() f() // output: // 10 } scope는 함수를 호출할 때가 아니라 어디에 선언하였는지에 따라 결정된다....
순서가 중요한 경우 package main import "fmt" func remove(slice []int, s int) []int { return append(slice[:s], slice[s+1:]...) } func main() { var Slice1 = []int{1, 2, 3, 4, 5} fmt.Printf("slice1: %v\n", Slice1) Slice2 := remove(Slice1, 2) fmt.Printf("slice2: %v\n", Slice2) } 실행 결과 slice1: [1 2 3 4 5] slice2: [1 2 4 5] 순서가 중요하지 않은 경우 package main import "fmt" func remove(s []int, i int) []int { s[i] = s[len(s)-1] return s[:len(s)-1] } func main() { var Slice1 = []int{1, 2, 3, 4, 5} fmt....
vscode에서 아래와 같은 에러 발생시 gopls requires a module at the root of your workspace. You can work with multiple modules by opening each one as a workspace folder. settings.json 파일에 아래와 같이 추가하고 vscode를 재실행한다. "gopls": { "experimentalWorkspaceModule": true, },
package main import ( "fmt" "log" ) func init() { log.SetPrefix("Blockchain: ") } func main() { fmt.Println("test") log.Println("test") } 실행시켜보면 test Blockchain: 2021/04/15 15:04:03 test
출처: 예제로 배우는 Go 프로그래밍 1. defer 특정 문장 혹은 함수를 defer를 호출하는 함수가 return하기 직전에 실행하게 한다. package main import "os" func main() { f, err := os.Open("1.txt") if err != nil { panic(err) } // main 마지막에 파일 close 실행 defer f.Close() // 파일 읽기 bytes := make([]byte, 1024) f.Read(bytes) println(len(bytes)) } 2. panic 함수를 즉시 멈추고 defer를 모두 실행한 뒤 즉시 리턴.이것은 콜스택을 따라 상위함수에도 모두 적용....
golang flag package command-line flag를 파싱해주는 패키지. // flag값에 저장된 int64변수의 주소값 반환 maxValue := flag.Int64("max", 10, "Defines maximum value") /* xxxVar() 함수는 반환값이 없고 첫번째 인자로 변수의 포인터를 넘겨주면 변수에 값을 할당해줌. */ var minValue int64 flag.Int64Var(&minValue, "min", 0, "Defines minimum value") // flag에 command-line 파싱 // 꼭 호출해주어야 함 flag.Parse()
go.mod 파일에서 require ( <모듈명> v0.0.0 ) replace <모듈명> v0.0.0 => ../module // 이런 형태로 경로를 지정해줌