programming language/Go

[Go] go-tour _ basics [9/17]

moaoh 2021. 9. 22. 20:43

ํ•ด๋‹น๊ธ€์€ ์•„๋ž˜ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค.

 

Go๋ฅผ ํ–ฅํ•œ ์—ฌํ–‰

 

go-tour-ko.appspot.com


Packages

 

package main

import (
	"fmt"
	"math/rand"
)

func main() {
	fmt.Println("My favorite number is", rand.Intn(10))
}

๋ชจ๋“  go ํ”„๋กœ๊ทธ๋žจ์€ packge๋กœ ๊ตฌ์„ฑ์ด ๋˜์–ด์žˆ๋‹ค.

ํ˜„์žฌ ์ฝ”๋“œ์—์„œ๋Š” "fmt"์™€ "math/rand"๋ฅผ ๋ถˆ๋Ÿฌ์˜จ ์ƒํƒœ

rnad.Intn(10)์— ๊ฒฝ์šฐ ์‹คํ–‰๋˜๋Š” ํ™˜๊ฒฝ์ด ๋™์ผํ•˜๋ฏ€๋กœ ๊ฐ™์€ 1์ด๋ผ๋Š” ๊ฐ’์ด ๋ฐ˜ํ™˜๋˜๊ฒŒ ๋œ๋‹ค.

๋‹ค์–‘ํ•œ ์ˆซ์ž๋ฅผ ๋‚ด๋ณด๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณ€ํ™”ํ•˜๋Š” ์‹œ๋“œ๊ฐ’์„ ์ฃผ๋Š”ํ˜•์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค. (time ๋“ฑ)


Imports

 

package main

import (
	"fmt"
	"math"
)

func main() {
	fmt.Printf("Now you have %g problems.\n", math.Sqrt(7))
}

7์ด๋ผ๋Š” ์ˆซ์ž์˜ ์ œ๊ณฑ๊ทผ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

math.Sqrt() : ํ•ด๋‹น ์ˆซ์ž์˜ ์ œ๊ณฑ๊ทผ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

%g : ์‹ค์ˆ˜ํ˜•์„ ์ถœ๋ ฅ

 

1.
import "fmt"
import "math"

2.
import (
	"fmt"
	"math"
)

import๋ฅผ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ 1๋ฒˆ ๋ฐฉ๋ฒ•๊ณผ 2๋ฒˆ ๋ฐฉ๋ฒ•์œผ๋กœ ํฌ๊ฒŒ 2๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ 
2๋ฒˆ ๋ฐฉ๋ฒ• ํ˜•์‹์œผ๋กœ ์„ ์–ธ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค.


Exported names

 

package main

import (
	"fmt"
	"math"
)

func main() {
	fmt.Println(math.pi)
}

Pi๊ฐ€ ์•„๋‹Œ pi๋กœ ์„ ์–ธ์ด ๋˜์–ด์žˆ์–ด์„œ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์—†๋‹ค.

ํŒจํ‚ค์ง€ ๋‚ด๋ถ€์— ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ฑฐ๋‚˜ ์ฝ”๋“œ์˜ ์ž‘์„ฑ์ž๊ฐ€ ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ์„ ์–ธํ•œ ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์—๋Š”
ํ•ด๋‹น ํ•จ์ˆ˜์˜ ์ฒซ๊ธ€์ž๊ฐ€ ๋Œ€๋ฌธ์ž๋กœ ๋˜์–ด์žˆ์–ด์•ผ์ง€๋งŒ ํ•ด๋‹น ๋‚ด์šฉ์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

package main

import (
	"fmt"
	"math"
)

func main() {
	fmt.Println(math.Pi)
}

pi๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค


Functions

package main

import "fmt"

func add(x int, y int) int {
	return x + y
}

func main() {
	fmt.Println(add(42, 13))
}

x์™€ y๋ฅผ ๋”ํ•ฉ ๊ฐ’์„ ์ถœ๋ ฅ

ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ธ์ž๋ฅผ ๋„˜๊ฒจ์ฃผ๊ธฐ.

๋‹ค๋ฅธ ์–ธ์–ด๋“ค๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ํ•จ์ˆ˜์— ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š”๊ฒฝ์šฐ ๋ณ€์ˆ˜ ์ด๋ฆ„ ๋’ค์— ํƒ€์ž…์ด ์˜ค๋Š” ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ•ด์ค˜์•ผํ•œ๋‹ค.


Functions continued

package main

import "fmt"

func add(x, y int) int {
	return x + y
}

func main() {
	fmt.Println(add(42, 13))
}

x์™€ y๋ฅผ ๋”ํ•ฉ ๊ฐ’์„ ์ถœ๋ ฅ

์ฃผ์–ด์ง€๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ๊ฐ™์€๊ฒฝ์šฐ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ƒ๋žตํ•˜์—ฌ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.


Multiple results

package main

import "fmt"

func swap(x, y string) (string, string) {
	return y, x
}

func main() {
	a, b := swap("hello", "world")
	fmt.Println(a, b)
}

2๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ์„œ๋กœ ์Šค์™‘ํ•œ๋‹ค

go์— ๊ฒฝ์šฐ์—๋Š” ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

(string, string)์„ ๋ฐ˜ํ™˜ํ•˜๊ฒ ๋‹ค๊ณ  ์„ ์–ธํ•˜์—ฌ ํ•œ๋ฒˆ์— 2๊ฐœ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด๊ฒŒ๋˜๋„ค..? ์ง„์งœ ํŽธํ•˜๊ฒ ๋‹ค


Named return values

package main

import "fmt"

func split(sum int) (x, y int) {
	x = sum * 4 / 9
	y = sum - x
	return
}

func main() {
	fmt.Println(split(17))
}

์ˆซ์ž๋ฅผ ์ž๋ฆฌ์ˆ˜์— ๋”ฐ๋ผ ๋‚˜๋ˆˆ ๊ฐ’์„ ๋ฐ˜ํ™˜

(x, y int) ํ•œ ํ˜•์‹์œผ๋กœ ๋ฏธ๋ฆฌ ๋ฆฌํ„ด์‹œํ‚ฌ ๋ณ€์ˆ˜๊ฐ€ ์ง€์ •์ด ๋˜์–ด์žˆ์œผ๋ฉด ๊ทธ๋ƒฅ return๋งŒ ํ•˜์—ฌ๋„ ํ•ด๋‹น๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์™€.. ์ด๊ฑด ์ง„์งœ ์‹ ๋ฐ•ํ•˜๋‹ค๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋˜ ๊ตฌ์กฐ

์•„์ง๊นŒ์ง€๋Š” ์–ด์ฐŒ๋ณด๋ฉด ํŽธํ• ๊ฑฐ๊ฐ™๊ธฐ๋Š”ํ•œ๋ฐ ์–ด์ฐŒ๋ณด๋ฉด ์ฝ”๋“œ๊ฐ€ ๊ผฌ์ผ ์ˆ˜๋„ ์žˆ์„๊ฑฐ๊ฐ™์•„์„œ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค.


Variables

package main

import "fmt"

var c, python, java bool

func main() {
	var i int
	fmt.Println(i, c, python, java)
}

default๋กœ ์„ค์ •๋œ ๊ฐ’์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•

ํ˜•์‹ ์ด๋ฆ„ ํƒ€์ž… 

var : ํ•ด๋‹น ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’

 


Variables with initializers

package main

import (
	"fmt"
	"reflect"
)

var i, j int = 1, 2

func main() {
	var c, python, java = true, false, "no!"
	fmt.Println(i, j, c, python, java)
	fmt.Println(reflect.TypeOf(i), reflect.TypeOf(j), reflect.TypeOf(c), reflect.TypeOf(python), reflect.TypeOf(java))
}

ํ•ด๋‹น ๊ฐ’๋“ค์„ ์ถœ๋ ฅํ•˜๊ณ , ๊ทธ ๊ฐ’๋“ค์˜ ํƒ€์ž…๋“ค์„ ์•„๋ž˜์— ์ถœ๋ ฅ

์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์˜ณ๋ฐ”๋ฅธ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด type์€ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.


์ค‘๊ฐ„ ํ›„๊ธฐ

ํŒŒ์ด์ฌ๊ณผ c์˜ ์žฅ์ ์„ ์„ž์–ด๋‘” ๋“ฏํ•œ ์–ธ์–ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

์ฝ”๋“œ์˜ ์ž‘์„ฑ๋ฐฉ๋ฒ•์€ ์ƒ๋‹นํžˆ ๊น”๋”ํ•˜๊ณ , ํŒŒ์ด์ฌ์˜ ์ฝ”๋“œ์ž‘์„ฑ์— ๋”ฐ๋ฅธ ํŽธ์˜์„ฑ์€ ๊ฐ€์ ธ์˜ค๊ณ  c์˜ ์•ˆ์ „์„ฑ๋„ ๊ฐ€์ ธ์˜จ ๋А๋‚Œ?

๋Œ“๊ธ€์ˆ˜0