반응형
1. Go 서버 설정Go와 Node.js를 연결하려면 여러 방법이 있지만, 일반적으로는 두 언어 간의 통신은 HTTP API를 통해 이루어집니다. 먼저 Go로 간단한 HTTP 서버를 생성합니다.package mainimport ( "encoding/json" "net/http")type Cat struct { Name string `'json:"name"` Age int `json:"age"`}func catsHandler(w http.ResponseWriter, r *http.Request) { if r.Method == http.MethodGet { cats := []Cat{ {Name: "Koras02", Age: 27}, {Name: "PiPi", Age: 22}, } w.Header()...
1. Go 웹 서버 설정Go 언어로 웹 개발을 하기위해서 기본적인 레이아웃을 만드는 방법은 HTML 템플릿과 Go http를 사용하면 됩니다. 먼저 Go를 사용해서 웹 서버를 설정해줍니다.package mainimport ( "html/template" "net/http")type PageVariables struct { Title string}func main() { // 정적 파일을 사용하기 위한 핸들러 설정 http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static")))) http.HandleFunc("/", HomePage) http.ListenAndServe(":8080", nil);}func Ho..
1. 고루틴(goroutine)고루틴은 Go에서 경량 스레드로, go 키워드를 사용해 함수를 비동기적으로 실행할 수 있게 해줍니다. 고루틴은 메모리 해드가 적고, 수천 개의 고루틴을 동시에 실행할 수 있습니다.package mainimport ( "fmt" "time")func sayHello(id int) { for i := 0; i 2. 채널(channel)채널은 고루틴 간의 데이터 통신을 위한 구조체로, 데이터의 송시과 수신을 안전하게 처리할 수 있게 해주며, 채널을 사용하면 고루틴 간에 데이터를 전송하고 동기화할 수 있습니다.package mainimport ( "fmt")func produce(ch chan요약고루틴: 비동기적으로 실행되는 경량 스레드.채널: 고루틴 간 데이터 통신을 위한 구조체..
1. 구조체 정의Go에서 구조체는 사용자 정의 데이터 타입으로, 여러 개의 필드를 가질 수 있습니다. 예를 들어 Animal 이라는 구조체를 정의해 보겠습니다.package mainimport "fmt"type Animal struct { Name string Age int }2. 인터페이스 정의인터페이스는 특정 메서드를 가진 타입을 정의하며, 예를 들어 Speak 라는 메서드를 가진 Speaker 인터페이스를 만들어보겠습니다.// interface 정의type Speaker interface { Speak() string}3. 사용자 정의 데이터 타입구조체가 인터페이스를 구현하도록 설정하고 Dog와 Cat이라는 두 개의 구조체를 만들어 보겠습니다.// 사용자 정의 데이터 타입type Dog struc..
1. Go 맵 사용법Go에서 맵(map)은 키-값 쌍으로 데이터를 저장하는 자료구조로, Go에서 맵을 정의하고 초기화하는 방법은 아래와 같습니다. Go 맵 정의 및 초기화맵을 정의하고 초기화하는 방법입니다package mainimport "fmt"func main() { // 맵 정의 myMap := make(map[string]int)}데이터 추가맵의 데이터를 추가하는 방법은 다음과 같습니다, 키를 사용해 값을 할당합니다.myMap["apple"] = 1 // "apple" 키에 1 값을 추가데이터 조회맵에서 데이터를 조회할 때는 키를 사용합니다. 키가 존재하지 않을 경우 기본값을 반환// 데이터 추가myMap["apple"] = 1myMap["banana"] = 2// 데이터 조회fmt.Println..
Go 언어에서 배열과 슬라이스는 중요한 데이터 구조입니다. 이 두가지는 서로 다르게 동작해, 각각의 특성과 사용 용도를 이해할 수 있습니다.1. 배열(Array)정적 크기: 배열은 선언 시 크기가 고정되며, 이후 크기를 변경할 수 있음메모리 할당: 배열은 연속된 메모리 블록에 할당값 타입: 배열은 값 타입으로, 배열은 다른 변수에 할당하면 복사가 이루어짐package mainimport "fmt"func main() { var arr[6]int // 크기가 6일 배열 선언 arr[0] = 1 arr[1] = 2 fmt.Println(arr) // [1,2,0,0,0,0]}2. 슬라이스 (Slice)동적 크기: 슬라이스는 동적으로 크기를 조정할 수 있으며, 배열에 대한 레퍼런스메모리 할당: 슬라이스는 내부..