S # 39 의 기본값입니다 Go& 방법.

39 을 지정할 수 있는 방법이 있는 기본값입니다 Go& 함수은? 나는 아무것도 찾을 수 있지만, 내가 찾는 이 문서에서 can& # 39 이것은 t 지정하는 가능하죠.

func SaySomething(i string = "Hello")(string){
...
}

아니, 일부 다른 옵션을 수축됐는데 구현하십시오 기본값입니다. 몇 가지 [좋은 블로그 포스트] (http://joneisen.me/development/code/2013/06/23/golang-and-default-values.html) 이 문제에 관한 몇 가지 있지만 구체적인 예를 들어.

&lt br>;

  • 옵션을 사용할 수 있는 요청자에게 선택했습니까 1:* 기본값과
// Both parameters are optional, use empty string for default value
func Concat1(a string, b int) string {
  if a == "" {
    a = "default-a"
  }
  if b == 0 {
    b = 5
  }

  return fmt.Sprintf("%s%d", a, b)
}

&lt br>;

  • 옵션 2:* 옵션임 매개변수입니다 한 끝에
// a is required, b is optional.
// Only the first value in b_optional will be used.
func Concat2(a string, b_optional ...int) string {
  b := 5
  if len(b_optional) > 0 {
    b = b_optional[0]
  }

  return fmt.Sprintf("%s%d", a, b)
}

&lt br>;

  • 옵션 3:* 구조체입니다 구성
// A declarative default value syntax
// Empty values will be replaced with defaults
type Parameters struct {
  A string `default:"default-a"` // this only works with strings
  B string // default is 5
}

func Concat3(prm Parameters) string {
  typ := reflect.TypeOf(prm)

  if prm.A == "" {
    f, _ := typ.FieldByName("A")
    prm.A = f.Tag.Get("default")
  }

  if prm.B == 0 {
    prm.B = 5
  }

  return fmt.Sprintf("%s%d", prm.A, prm.B)
}

&lt br>;

  • 옵션 4:* 전체 바리아디스 인수 구문 분석 (자바스크립트 스타일)
func Concat4(args ...interface{}) string {
  a := "default-a"
  b := 5

  for _, arg := range args {
    switch t := arg.(type) {
      case string:
        a = t
      case int:
        b = t
      default:
        panic("Unknown argument")
    }
  }

  return fmt.Sprintf("%s%d", a, b)
}
해설 (2)
해결책

아니요, 구글에서 지원하는 데 힘을 볼 수 없기 때문입니다.

topic/golang-nuts/-5mcaivw0qq https://groups.google.com/forum/ #!

해설 (1)

아니, 기본값을 지정할 수 있는 방법이 없습니다. 내가 믿는 가독성을 높이기 위해 이 완료되어도 고의적으로요 의 비용을 들여, 조금 더 많은 시간을 (및 잘하면, 사고) 에 writer& # 39 의 종료.

내 생각에는 이벤트수정적절한 외곽진입 갖추고 있는 &quot default"; 새로운 기능을 가지고 있는 것이 좀 더 일반적인 물품요 기본으로 지원한다. 코드에 대한 정확한 의도를 없기 때문에 이 됩니다. 예를 들면 다음과 같습니다.

func SaySomething(say string) {
    // All the complicated bits involved in saying something
}

func SayHello() {
    SaySomething("Hello")
}

I made a 수행합니까 공통 기능을 제공하는 것이 매우 큰 힘을, 일반 다시 시작된다. 예를 들어, '그냥' 이 많은 라이브러리보다는 볼 수 있습니다 다음 줄 것이라고 할 수 있는 프 t.프린틀린 자도으로 뭐라구오 펠릭스 t. 프린스 '의 코드, 그러나, 그렇지 않으면, 언제 판독값 someone& # 39 장 기능을 통해 그들이 선택해제합니다 못하며창조된 부르나. # 39, won& 기본값과 함께, 내가 모르는 어떤 일이 되어야 하는 참조입니다 기본값입니다 실제로 어떤 기능이 없이 드리고자 합니다.

해설 (2)