초보자를 위한 Go의 까다로운 개념
3620 단어 gobeginnersprogramming
Go 동시성 이해하기
동시성은 정확히 동시에 여러 작업을 실행하는 기능이 아닙니다. 나는 공식 문서를 포함하여 모든 곳에서 그 진술을 읽었지만 이 정의는 병렬성이라는 다른 용어에 대한 것입니다.
동시 작업은 실제로 병렬로 실행될 수 있지만 주요 목표는 아닙니다. 동시성은 그렇지 않은 반면 병렬 처리에는 여러 스레드가 필요하므로 차이점이 중요합니다.
Go는 고루틴이라는 킬러 기능을 제공하지만 이러한 기능 중 많은 기능이 동일한 스레드에서 실행될 수 있으며 프로세스를 자동으로 할당하는 것은 Go Runtime입니다. 개발자는 함수 앞에
go
키워드만 작성하면 되며 channels
를 사용하여 여러 고루틴이 서로 통신하도록 할 수 있습니다.결과적으로:
Parallelism is simply running things in parallel. Concurrency is a way to structure your program
Source: divan.dev
이 Go 마법은 매우 훌륭하고 매우 저렴한 동시성 구현을 허용하지만 공짜는 없으며 차이점을 알지 못하면 예기치 않은 오류가 발생할 수 있습니다.
캡슐화 이동
다른 많은 프로그래밍 언어와 달리 코드를 캡슐화하는 공개 또는 비공개 키워드가 없습니다. 대신 Go는 대문자 및 대문자가 아닌 형식을 사용합니다.
내보내려면 데이터 구조의 이름을 대문자로 표기해야 합니다.
즉, 다른 패키지에서 구조를 호출해야 하는 경우 구조를 내보내야 합니다. 변수, 함수, 상수 및 기타 유형에 대해 동일합니다. 스크립트에서 내부적으로만 필요한 경우 대문자로 유지하지 않아도 됩니다.
그러나 다음 샘플도 이 개념을 잘못 이해하면 디버그하기가 상당히 번거로울 수 있습니다.
package main
import (
"encoding/json"
"fmt"
"log"
)
type user struct {
id int
name string
email string
}
func main() {
data := `{
"id": 1001,
"name": "Hello",
"email": "[email protected]"
}`
var u user
err := json.Unmarshal([]byte(data), &u)
if err != nil {
log.Fatal(err)
}
fmt.Println(u)
}
위의 코드를 실행하면 다음이 출력됩니다.
{0 }
문제를 해결하고 데이터를 얻으려면 Struct의 필드를 내보냅니다.
type user struct {
Id int
Name string
Email string
}
Reference
이 문제에 관하여(초보자를 위한 Go의 까다로운 개념), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jmau111/tricky-concepts-in-go-for-beginners-19o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)