Golang { Syntax int := 1 }

Golang Syntax


https://go-tour-kr.appspot.com/

1. Hello GO!

package main
import (
    "fmt"
    "math"
)

func main() {
    fmt.Println("Happy", math.Pi, "Day")// Happy 3.141592653589793 Day
}

Go 프로그램은 모두 package(패키지)로 구성 되어 있다.
위 Go 코드는 main패키지로 부터 가져오고 있다.

위 코드에선 fmtmath를 import 하고 있다.
import( ..., ... )
와 같이 한번에 입력 할 수 도 있으며,
import fmt 
import math
 
로 각각 표현할 수 있다.

패키지를 import 하면 패키지의 메소드, 변수, 상수등을 접근하기 위해선 export 해주어야 하는데,
Go에서는 첫 문자가 대분자로 시작하면, 외부에서 접근이 가능한 exported name이 된다. 

즉, math.pi 는 외부에선 접근이 불가능하지만 math.Pi는 외부에서 접근이 가능하단 뜻이다. 

 

2. 함수

package main
import "fmt"

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

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

Go에서의 함수 선언은 func 함수명(매개변수) 반환형으로 정의한다.

  • 두개 이상의 매개변수를 받을 때 같은 타입일 경우 마지막 매개변수에만 타입을 명시하고 나머지는 생략 할 수 있다.
    add(x int, y int) >> add(x, y int)
  • Go의 함수에선 여러개의 결과를 return 할 수 있다.
    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)// world hello
    }

    대신 반환형에 각각 반환할 타입((string, string))을 적어줘야한다.

  • Go의 함수에선 반환할 변수들의 이름을 미리 정해 놓고 사용 후, 간단히 return할 수 있다.
    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))//7 10
    }
    

     

3. 변수

Go에선 변수를 선언하는 다양한 방법이 있다.

  • var x, y, z int
    var 키워드를 통해 여러 변수를 간히 변수를 선언할 수 있다.
    참고로 아무값도 넣지 않을 경우 각각의 기본 값 (int: 0, bool: false, string: “”)으로 초기화 된다.
    + 아무값도 넣지 않는 경우엔 자료형을 지정해주지 않는다면, 에러가 발생한다.
  • var c, python, java = true, false, "no!"
    또한 초기화시 따로 자료형을 명시하지 않는다면, 자료형을 알아서 정해준다.
  • x, y, z := 1, 2, 3
    := 키워드를 사용하면 간단히 변수를 사용할 수 있으며, 알아서 자료형을 정해준다.
    하지만 := 키워드는 함수 밖에선 사용할 수 없고, x int := 1 처럼 자료형을 지정해 줄 수 없다.

 

4. 상수

const Pi = 3.14와 같이 const 키워드를 통해 문자, 문자열, 부울, 숫자 자료형을 상수로 선언 할 수 있다.

  • 여러 상수를 선언할 땐 const ( ... )로 상수 여러개를 한번에 지정해 줄 수 있다.
    const (
        Pi = 3.14
        hello = "world"
    )
  • 상수는 문맥의 따라 자동으로 타입을 지정해주게 된다.
    또한 숫자의 경우 일반적인 변수 보다 정밀한 값을 표현 할 수 있다.

    package main
    import "fmt"
    
    const (
        Big   = 1 << 100
        Small = Big >> 99
    )
    
    func needInt(x int) int { return x*10 + 1 }
    func needFloat(x float64) float64 {
        return x * 0.1
    }
    
    func main() {
        fmt.Println(needInt(Small))  // 21
        fmt.Println(needFloat(Small))// 0.2
        fmt.Println(needFloat(Big))  // 1.2676506002282295e+29
    }
    

글의 문제가 있다면 댓글을 달아 주세요.

This site uses Akismet to reduce spam. Learn how your comment data is processed.