func
(
f Family
)
String
(
)
string
{
return
"Father: "
+
f
.
Father
+
"\nMather: "
+
f
.
Mather
+
"\nBrother: "
+
f
.
Brother
输出:
Father: fa
Mather: ma
Brother: bro
或者使用引用的方式
type Family struct {
Father string
Mather string
Brother string
func main() {
f := &Family{"fa", "ma", "bro"}
fmt.Println(f)
func (f *Family) String() string {
return "Father: " + f.Father + "\nMather: " + f.Mather + "\nBrother: " + f.Brother
如果类型定义了 String() 方法,它会被用在 fmt.Printf() 中生成默认的输出:等同于使用格式化描述符 %v 产生的输出。还有 fmt.Print() 和 fmt.Println() 也会自动使用 String() 方法。
不要在 String() 方法里面调用涉及 String() 方法的方法,它会导致意料之外的错误,比如无限递归调用。
类似于这样:
func (t TT) String() string {
return fmt.Sprintf("%v", t)
也很好理解,因为 fmt.Sprintf 又会去再次调用 String(),从而形成无限递归。
对于结构体,有时候我们需要打印它的信息,但是打印出来是这样的:type Family struct { Father string Mather string Brother string}func main() { f := Family{"fa", "ma", "bro"} fmt.Println(f)}输出:{fa ma bro}并不是很直观,golang允许你通过实现 String() 接口来自定义输出。type Family struct { Father
当定义了一个有很多方法的类型时,十之八九你会使用 String() 方法来定制类型的字符串形式的输出,换句话说:一种可阅读性和打印性的输出。如果类型定义了 String() 方法,它会被用在 fmt.Printf() 中生成默认的输出:等同于使用格式化描述符 %v 产生的输出。还有 fmt.Print() 和 fmt.Println() 也会自动使用 String() 方法。
packa...
总结了golang中字常见类型之间的相互转换方式:
go语言的类型转化都在strconv package里面,详情请参考:
http://golang.org/pkg/strconv
1 字符串string和各种int类型之间的相互转换方式:
string转成int:
int, err := strconv.Atoi(string)
string转成int64:
int64, err := strconv.ParseInt(string, 10, 64)
int转成string:
string := st
在日常编程中,使用fmt.Sprintf可以非常方便的拼接出字符串,但是你知道吗,人畜无害的fmt.Sprintf竟然是一个性能killer。
在日常的coding中,我们一般会使用以下几种方法去拼接字符串
// 1. + 运算符
str := str1+str2
// 2. fmt.Sprintf
str := fmt.Sprintf("%s %s",str1,str2)
// 3. strings.Builder
builder := strings.Builder{}
builder.Wirt.
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="tru
android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=“按钮的标题"