아침 8-9시까지 매일 Golang 공부 기록

Golang Study

  1. Package

    Every Go program is made up of packages.

    모든 Go 프로그램은 Package로 구성되어 있다.

    Programs start running in package main.

    프로그램은 main 패키지에서 실행되기 시작한다.

    This program is using the packages with import paths "fmt" and "math/rand".

    이 프로그램은 fmt와 math/rand 패키지를 함께 임포트해서 사용하고 있다.

    By convention, the package name is the same as the last element of the import path. For instance, the "math/rand" package comprises files that begin with the statement package rand.

    관례상, 패키지 이름은 임포트 경로의 마지막 요소와 같다. 예를 들어, math/rand 패키지는 **rand 패키지 문장(package rand)**으로 시작하는 파일을 포함한다.

    package main
    
    import (
    	"fmt"
    	"math/rand"
    )
    
    func main() {
    	fmt.Println("My favorite number is", rand.Intn(10))
    }
    
  2. imports

    This code groups the imports into a parenthesized, "factored" import statement.

    이 코드 import를 괄호로 묶은 팩터링된 import문으로 그룹화한다.

    여기서 질문 → import문을 그룹화 하는 이유는?

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

    You can also write multiple import statements, like:

    또한, 아래와 같이 멀티라인으로 import문을 쓸 수 있다.

    import "fmt"
    import "math"
    

    But it is good style to use the factored import statement.

    그러나 팩터링된 import문을 사용하는 것이 더 좋은 스타일이다.

  3. Exported Name

    In Go, a name is exported if it begins with a capital letter. For example, Pizza is an exported name, as is Pi, which is exported from the math package.

    Go 언어에서, 대문자로 시작하는 이름은 외부에서 접근이 되어진다.(public 접근 제한자) 예를 들어, Pizza는 외부에서 접근 할 수 있는(?) 이름이다. match 패키지의 Pi도 마찬가지로 외부로 부터 접근이 가능하다.

    pizza and pi do not start with a capital letter, so they are not exported.

    pizza와 pi는 대문자로 시작하지 않는다. 그래서 그들은 외부에서 접근이 불가하다.(private 접근 제한자)

    When importing a package, you can refer only to its exported names. Any "unexported" names are not accessible from outside the package.

    패키지를 import 할 때, 당신은 외부 접근이 가능한 이름(public 접근 제한자로 선언된 것들)만 호출할 수 있다. unexported 이름을 가진 어떤 것(private 접근 제한자로 선언된 모든 것)이든 패키지 외부에서 접근 할 수 없다.

    Run the code. Notice the error message.

    아래 코드를 실행해보자. 오류 메시지를 확인해보자.

    package main
    
    import (
    	"fmt"
    	"math"
    )
    
    func main() {
    	fmt.Println(math.pi) // <-- 패키지 외부에서 접근 할 수 없는 unexported name에 접근하고 있어서 오류가 발생하고 있다.
    }
    
    

    To fix the error, rename math.pi to math.Pi and try it again.

    이 오류를 고치기 위해서, math.pi를 math.Pi로 이름을 변경하고 다시 시도 해보자.

    package main
    
    import (
    	"fmt"
    	"math"
    )
    
    func main() {
    	fmt.Println(math.Pi) // rename math.pi to math.Pi 
    }