반응형
Go의 ToString () 함수
이 strings.Join
함수는 문자열 조각 만받습니다.
s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))
그러나 ToString()
함수 를 구현하는 임의의 객체를 전달할 수 있으면 좋을 것 입니다.
type ToStringConverter interface {
ToString() string
}
Go에 이와 같은 것이 있습니까 아니면 int
ToString 메서드와 같은 기존 유형을 장식하고 주위에 래퍼를 작성 strings.Join
해야합니까?
func Join(a []ToStringConverter, sep string) string
String() string
명명 된 유형에 메서드를 연결하고 사용자 지정 "ToString"기능을 즐기십시오.
package main
import "fmt"
type bin int
func (b bin) String() string {
return fmt.Sprintf("%b", b)
}
func main() {
fmt.Println(bin(42))
}
플레이 그라운드 : http://play.golang.org/p/Azql7_pDAA
산출
101010
당신이 소유 한 경우 struct
, 당신은 자신이 할 수 변환를 문자열로 기능.
package main
import (
"fmt"
)
type Color struct {
Red int `json:"red"`
Green int `json:"green"`
Blue int `json:"blue"`
}
func (c Color) String() string {
return fmt.Sprintf("[%d, %d, %d]", c.Red, c.Green, c.Blue)
}
func main() {
c := Color{Red: 123, Green: 11, Blue: 34}
fmt.Println(c) //[123, 11, 34]
}
구조체를 사용한 또 다른 예 :
package types
import "fmt"
type MyType struct {
Id int
Name string
}
func (t MyType) String() string {
return fmt.Sprintf(
"[%d : %s]",
t.Id,
t.Name)
}
사용할 때주의하세요.
'+'로 연결하면 컴파일되지 않습니다.
t := types.MyType{ 12, "Blabla" }
fmt.Println(t) // OK
fmt.Printf("t : %s \n", t) // OK
//fmt.Println("t : " + t) // Compiler error !!!
fmt.Println("t : " + t.String()) // OK if calling the function explicitly
다음과 같은 것을 선호합니다.
type StringRef []byte
func (s StringRef) String() string {
return string(s[:])
}
…
// rather silly example, but ...
fmt.Printf("foo=%s\n",StringRef("bar"))
참고URL : https://stackoverflow.com/questions/13247644/tostring-function-in-go
반응형
'programing' 카테고리의 다른 글
추상 클래스는 언제 사용합니까? (0) | 2020.10.14 |
---|---|
(왜) 초기화되지 않은 변수 정의되지 않은 동작을 사용하고 있습니까? (0) | 2020.10.14 |
Node.js를 사용하여 전체 디렉토리를 압축해야합니다. (0) | 2020.10.14 |
JavaScript에서 "GET"요청 매개 변수를 얻는 방법은 무엇입니까? (0) | 2020.10.13 |
SQLAlchemy가 db로 보낸 SQL 명령 디버깅 (표시) (0) | 2020.10.13 |