Go Language #1 basics - countingmars/countingmars.github.io GitHub Wiki
https://tour.golang.org/basics/1
Package
Go νλ‘κ·Έλ¨μ main ν¨ν€μ§κ° μ€νμ μμμ§μ μ΄λ€.
ν¨ν€μ§ μ μΈμ μ΄λ κ² νλ€.
package main
λν main() ν¨μλΆν° μ€νλλ€.
package main
func main() {
// entry point of this program
}
Import
λ€λ₯Έ ν¨ν€μ§λ₯Ό μ¬μ©νλ λ°©λ²μ μ΄λ° μμ΄λ€.
import "math"
μ΄λ° λ°©μλ μλ€.
import (
"fmt"
"math"
"math/rand"
)
factored import λΌκ³ λΆλ¦¬λ©°, κΆμ₯λλ λ°©μμ΄λ€.
μν¬νΈν ν¨ν€μ§μ κΈ°λ₯μ μ¬μ©νκ³ μΆλ€λ©΄ μ΄λ° μμ΄λ€.
fmt.Println(math.Pi)
math.Sqrt(7)
rand.Intn(10)
Exported names
μμ μ½λλ₯Ό μ보면 ν¨ν€μ§μ ν¨μκ° λͺ¨λ λλ¬Έμλ‘ μμνλ€λ κ²μ νμΈν μ μλ€. κ·Έλ λ€. μΈλΆμ λ ΈμΆν μμλ νμ λλ¬Έμλ‘ μμν΄μΌ νλ€.
Functions
ν¨μμ νλΌλ―Έν°λ μλμ²λΌ μ μΈν μ μλ€.
func add(x int, y int) int {
return x + y
}
λ³μλͺ μ΄ λ¨Όμ μ€κ³ κ·Έ λ€μ νμ μ΄ μλ€λ μ μ μ μνμ.
ν¨μ νλΌλ―Έν°μ νμ μ μλ΅ λ μ μλ€. λ§μ§λ§ νλλ§ μ°λ©΄ λλ€.
func add(x, y int) int {
return x + y
}
Multiple results
ν¨μλ μ¬λ¬κ°μ κ°μ λ°νν μ μλ€.
swap ν¨μλ₯Ό μλ‘ λ€μ΄λ³΄μ.
func swap(x, y string) (string, string) {
return y, x
}
function main() {
a, b := swap("a", "b")
frm.Println(a, b)
}
Named return values
λ°νκ°μ μ΄λ¦μ μ€ μ μλ€.
func swap(x, y int) (a, b int) {
a = y
b = x
return
}
λ°νκ°μ λͺ μνμ§ μλ return ꡬ문μ naked return (λ²κ±°λ²μ λ°ν)μ΄λΌκ³ λΆλ₯΄λ©°, μ€μ λ‘λ named return values λ₯Ό λ°ννλ€. μ¬κΈ°μλ aμ bλ₯Ό λ°ννλ€.
λ§μ½ λ무 κΈ΄ ν¨μμμ naked returnμ μ°λ©΄ κ°λ μ±μ ν΄μΉκ² λλ€. μμ swap ν¨μλ μ΄λ κ² μ¬μ©νλ€.
fmt.Println(swap(1, 2)) // κ²°κ³Όλ 2 1
Variables
λ³μ μ¬λ¬κ°λ₯Ό μ μΈν λ varλ₯Ό μΈ μ μλ€. νμ μ 맨 λ§μ§λ§μ μ΄λ€.
var c, python, java bool
var i int
Variables with initializers
λ³μλ μ μΈ μ¦μ μ΄κΈ°ν(κ° ν λΉ)λ μ μλ€.
var a, b int = 1, 2
μ΄κΈ°νλ λ νμ μ μμΈ‘ν μ μμΌλ―λ‘, νμ νκΈ°λ₯Ό μλ΅ν μλ μλ€.
var a, b, c = 1, 2, "hi"
Short variable declarations
ν¨μ λ΄λΆμμλ§ μΈ μ μλ μ§§μ λ³μ μ μΈλ²λ μλ€.
a := 1
ν¨μ μΈλΆμμλ λͺ¨λ λ¬Έμ₯μ΄ var, funcμ κ°μ ν€μλλ‘ μμν΄μΌ νλ€. λ°λΌμ := λ₯Ό ν¨μ μΈλΆμμλ μ¬μ©ν μ μλ€.
Zero values
μ΄κΈ°ν νμ§μλ λ³μλ zero valueλ₯Ό κ°μ§κ² λλ€. κ° νμ λ³ zero valueλ λ€μκ³Ό κ°λ€.
- μ«μν : 0
- λΆλ¦°ν : false
- λ¬Έμν : ""
Type conversions
νμ λ³νμ λͺ μμ μΌλ‘ μ΄λ£¨μ΄μ ΈμΌ νλ€.
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
μμ½νλ©΄ T(v) ν¨μκ° v κ°μ Tνμ μΌλ‘ λ³ννλ ν¨μμ΄λ€. λ§μ΄ μ΄λ ΅μ§?
Type inference
νμ μ λͺ μνμ§ μκ³ λ³μλ₯Ό μ μΈνμ λ, κ·Έ λ³μμ νμ μ ν λΉνλ κ°μ μν΄ μΆλ‘ λλ€.
var a int
i := a // iλ int νμ
μ΄ μ μ©λλ€.
f := 3.14 // float64 νμ
c := 0.867 + 0.5i // complex128 νμ
fmt.Printf("%T %T %T", i, f, c)
Constants
μμλ₯Ό μ μνκ³ μ νλ€λ©΄ const ν€μλλ₯Ό μ¨μΌνλ€. const ν€μλμ :=λ₯Ό ν¨κ» μ°μ§λ λͺ»νλ€.
package main
import "fmt"
const PI = 3.14
func main() {
const one = 1
const text = "string"
const truth = true
fmt.Println(PI, one, text, truth)
}