[The Go Programming Language] 1장 튜토리얼 - 1.8 미진한 부분

in #kr-dev6 years ago (edited)

modolee_logo
안녕하세요. 개발자 모도리입니다.
The Go Programming Language 라는 책으로 Go를 공부하고 있으며, 해당 책의 내용을 요약 정리해서 올리려고 합니다. 저는 번역본을 구매해서 공부하고 있습니다.

지난 게시물


1장 튜토리얼

1.8 미진한 부분

제어 흐름

  • 일반적인 switch
switch coinflip() {
case "heads":
    heads++
case "tails":
    tails++
default:
    fmt.Println("landed on edge!")
}
  • coinflip 호출의 결과는 각각의 케이스 값과 비교됩니다.
  • 케이스는 위에서 아래로 평가되기 때문에 처음 일치하는 것이 실행됩니다.
  • default 케이스는 다른 케이스 중 어느 하나도 일치하지 않을 때 적용되며, 어느 위치에 있어도 됩니다.
  • C 언어와 같이 다음 구문까지 실행되지 않습니다. (케이스 실행 문 마지막에 break를 넣지 않아도 됩니다.)
  • 태그 없는 switch
func Signum(x int) int {
    switch {
    case x > 0:
        return +1
    default:
        return 0
    case x < 0:
        return -1
    }
}
  • switch는 for, if문에서 처럼 부가적으로 짧은 변수 선언, 증가 또는 할당 구문, 함수 호출 등의 간단한 구문을 비롯해 테스트 전에 값을 설정할 수 있습니다.

명명된 타입 (Named types)

  • 구조체에 이름을 붙이는 경우
type Point struct {
    X, Y int
}

var p Point
  • 구조체 타입의 이름은 보통 길기 때문에 대부분 이름을 붙여 사용합니다.
  • C 언어의 typedef 와 같은 역할을 합니다.

포인터

  • Go는 변수의 주소를 갖는 값인 포인터를 제공합니다.
  • C 언어에서의 포인터는 비교적 제약이 없습니다. 다른 언어에서는 포인터는 '참조'로 위장하며, 주고받는 것 이외에는 거의 할 수 있는게 없습니다.
  • Go는 그 중간에 위치하며, 포인터를 명시적으로 볼 수 있습니다.
  • & 연산자는 변수의 주소를 산출하고, * 연산자는 포인터가 참조하는 변수의 값을 산출하지만 포인터의 산술 연산은 제공하지 않습니다.
  • 포인터는 2.3.2절에서 자세히 설명합니다.

메소드와 인터페이스

  • 메소드는 명명된 타입과 관련된 함수입니다. 일반적이지 않게 거의 모든 명명된 타입에 메소드를 붙일 수 있습니다.
  • 인터페이스는 각기 다른 상세 타입(concrete types)들을 표현 및 구현 방법에 상관 없이 타입이 가진 메소드로 동일하게 취급할 수 있는 추상 타입(abstract types)입니다.
  • 7장에서 상세히 다룹니다.

패키지

  • Go는 광범위하고 유용한 패키지들인 표준 라이브러리와 함께 제공되며, Go 커뮤니티에서 그 외의 수많은 패키지들을 만들고 공유합니다.
  • 개발할 때 자신만의 코드를 작성하는 것보다 기존 패키지를 사용하는 것이 더 중요한 경우가 자주 있습니다.
  • 새 프로그램을 시작하기 전에는 기존 패키지 중에 하려는 일을 더 쉽게 도와줄 만한 패키지가 있는지 확인해보는 편이 좋습니다.
    • 표준 라이브러리 패키지의 인덱스는 https://golang.org/pkg 에서 찾을 수 있습니다.
    • 커뮤니티에서 제공된 패키지의 인덱스는 https://godoc.org 에서 찾을 수 있습니다.
    • go doc 도구는 커맨드라인에서 이 문서들에 손쉽게 접근할 수 있게 합니다.

    $ go doc http.ListenAndServe
    package http // import "net/http"

    func ListenAndServe(addr string, handler Handler) error
    ListenAndServe listens on the TCP network address addr and then calls Serve
    with handler to handle requests on incoming connections. Accepted
    connections are configured to enable TCP keep-alives.

    The handler is typically nil, in which case the DefaultServeMux is used.

    ListenAndServe always returns a non-nil error.

주석

  • 각 함수의 선언 전에 그 동작을 서술하는 주석을 작성하는 편이 좋다.
  • go doc, godoc 도구에서 주석을 찾고 표시하는데 이러한 관례에 의존하므로 주석의 위치가 중요합니다.
  • 한 줄 주석 : //
  • 여러 줄 주석 : /* ... */

이어보기

[The Go Programming Language] 2장 프로그램 구조 - 2.1 이름

Coin Marketplace

STEEM 0.17
TRX 0.15
JST 0.029
BTC 60250.23
ETH 2335.37
USDT 1.00
SBD 2.52