Go基本文法
1. Imports and Exports
Vscodeを使用して、自動的に使用するパッケージをインポートします.
hello worldの例では、fmtパッケージのPrintln関数を作成するときに自動的にインポートされることがわかります.
Goでexportとは、関数名または変数名の最初のアルファベットを大文字にして書き出します.
簡単ですね.
実際には、fmtパッケージで使用可能な関数のリストを表示すると、すべての頭文字が大文字であることがわかります.
2.変数と定数
基本
// 변수
var [변수명] [타입] = "값"
ex) var name string = "이름"
// 상수
const [변수명] [타입] = "값"
ex const NAME string = "name"
変数のタイプ
デフォルトではint、string、float、boolです.
残りはgo typesを参照してください.
サムネイル
Goは変数宣言時にサムネイルが存在する.
注意すべき点は関数でしか使用できません.全境無効.
[変数名]:=[値]
使用すると、コンパイラは値のタイプを推定し、タイプを自動的に割り当てます.
// 전역 공간
food := "rice" 안됨(X)
var food string = "rice" 이것만 가능
func main(){
food := "rice" // food 변수에 string 타입 할당
num := 1 // num 변수에 int 타입 할당
}
3.関数
関数はfuncキーワードを使用できます。
func [함수명](arguments) return type {
...
}
func add(a int, b int) int {
return a + b
}
OR
func add(a, b int) int {
return a + b
}
複数の戻り値を指定できます。
func add(a int, b int) (int, string) {
return a+b, "Add success"
}
func main(){
// value 에는 3이 result 에는 "Add success" 가 받아진다
value, result := add(1, 2)
// _ 를 사용해서 무시 할 수 있다.
value, _ := add(1,2)
}
いくつかの論点が得られる。
func repeatMe(words ...string){
fmt.Println(words)
}
func main(){
repeatMe("a", "b", "c", "d")
}
// [a b c d]
naked return
func lenAndUpper(name string) (length int, uppercase string){
length = len(name)
uppercase = strings.ToUpper(name)
return
}
defer:関数が終わったら何かを実行します
func lenAndUpper(name string) (length int, uppercase string){
defer fmt.Println("done")
length = len(name)
uppercase = strings.ToUpper(name)
return
}
4. for, range, ...args
Goはforのみ。
func superAdd(numbers ...int) int {
// range 는 array에 loop를 적용할 수 있도록 해준다.
// 기본적으로 index 를 준다.
total := 0
for index, number := range numbers {
total += number
}
return total
}
func main() {
total := superAdd(1,2,3,4,5,6)
}
5. if with a Twist
func canIDrink(age int) bool {
// 조건에 () 가 필요없다.
if age < 18 {
return false
}
return true
}
variableexperission:ifを書いた瞬間にvariableを生成できます。
func canIDrink(age int) bool {
if koreanAge := age + 2; koreanAge < 18 {
return false
}
return true
}
6. switch
ブレークポイントは必要ありません。
func canIDrink(age int) bool {
switch age {
case 10:
return false
case 18:
return true
}
return true
}
7. Pointers
Cに似ている
&アドレス値
*アクセスアドレス
func main(){
a := 2
b := &a
*b = 6
fmt.Println(a)
// 6 출력
}
8. Arrays and Slices
arrayにサイズがある
sliceはサイズを動的に割り当てることができます
numbers := [5]int{1,2,3,4}
numbers[4] = 5
// Slice : length 없이 Array 사용
// append 는 직접 값을 수정 하는 것이 아니라 새로운 값을 return 해준다.
numbers := []int{1,2,3,4}
numbers = append(numbers, 5)
9. Maps
map[key]value{...}
mapは反復的に使用することもできます。
me := map[string]string{"name":"byeongmin", "age":"29"}
// print : map[age:29, name:byeongmin]
for key, value := range me {
fmt.Println(key, value)
}
// print : name byeongmin
// age 29
10. Structs
type person struct {
name string
age int
favFood []string
}
func main(){
// 1. 순서대로 값을 넣어줌
favFood := []string{"a", "b"}
me := person{"obm", 29, favFood}
// 2. key 값을 지정하여 작성
me := person{name: "obm", age: 29, favFood: favFood}
}
Reference
この問題について(Go基本文法), 我々は、より多くの情報をここで見つけました https://velog.io/@obm4489/Go-기본-문법テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol