首页 > 解决方案 > 原始值类型的复合文字

问题描述

我是新手,有一个问题。也许它不是惯用的 Go 代码,而只是为了研究如何使该代码工作?似乎我可以把它作为一个接收器类型的 int,但是如何在 main 中调用它呢?:

xago

package main

import "fmt"

type xa int

func (xl xa) print() {
    fmt.Println(xl)
}

main.go

package main

func main() {
    X := (xa{2})//not working
    X.print()
}

跑:

go run main.go xa.go
.\main.go:10:8: invalid composite literal type xa

标签: gointegerreceivercomposite-literals

解决方案


使用类型转换

x := xa(2) // type conversion
x.print()

或者给你的变量一个类型,你可以使用一个可分配给(类型变量)的无类型常量xa

var y xa = 3 // 3 is an untyped constant assignable to xa
y.print()

试试Go Playground上的示例。


推荐阅读