golang类型字面量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang类型字面量相关的知识,希望对你有一定的参考价值。
参考技术A 类型字面量又被称作“未命名类型”基本上除自定义类型、预定义类型外都是类型字面量。
以下都是类型字面量:
golang类型系统总览
欢迎加v交流:maxwangnan005
Golang学习之路:Go+体验分享及字面量讲解
GO+在线练习地址:https://play.goplus.org/
一、GO与GO+的直观区别
GO+在Go的基础上做了很多优化,Go+ 提供了更简单优雅的语法,比 Go 更接近自然语言。
下面是两者打印"hello world"的区别:
Go
package main
import "fmt"
func main()
fmt.Println("hello world")
Go+
println "hello world"
一下就有了python的感觉了,是不是很方便! 下面简单讲解一下GO+的字面量
二、GO+的字面量
1. 什么是字面量
字面量也就是我们常说的变量的值。
比如int a=1
那1
就是字面量;string b="ab"
;ab
就是字面量。
在整型、字符、浮点这些字面量中,GO+的字面量和Go的字面量区别不大
在复数字面量(列表、map、切片等)中他们差别就体现出来了
2. 切片字面量两者区别
GO
x := [2]float1, 3.4 // []float64
y := [1]int1 // []int
z := [2]interface1+2i, "xsw" // []interface
GO+
x := [1, 3.4] // []float64
y := [1] // []int
z := [1+2i, "xsw"] // []interface
3. map字面量两者区别
x :=map[string] float64 "Hello": 1, "xsw": 3.4 // map[string]float64
y := map[string] interface"Hello": 1, "xsw": "Go+" // map[string]interface
z := map[string] int"Hello": 1, "xsw": 3 // map[string]int
empty := map[string]interface // map[string]interface
GO+
x := "Hello": 1, "xsw": 3.4 // map[string]float64
y := "Hello": 1, "xsw": "Go+" // map[string]interface
z := "Hello": 1, "xsw": 3 // map[string]int
empty := // map[string]interface
4. 列表
GO
a :=list.New()
a.PushBack(1)
a.PushBack(2)
a.PushBack(3)
GO+
arr := [1, 2,3 ]
5. 结构体
GO+
type Config struct
Dir string
Level int
func foo(conf *Config)
// ...
foo(Dir: "/foo/bar", Level: 1)
这里 foo(Dir: "/foo/bar", Level: 1)
相当于foo(&ConfigDir: "/foo/bar", Level: 1)
,但是,您不能替换foo(&Config"/foo/bar", 1)
为foo("/foo/bar", 1)
,因为将其视为 "/foo/bar", 1
结构文字会令人困惑。
您还可以在 return 语句中省略结构类型。例如:
type Result struct
Text string
func foo() *Result
return Text: "Hi, Go+" // return &ResultText: "Hi, Go+"
GO+在线练习地址:https://play.goplus.org/
以上是关于golang类型字面量的主要内容,如果未能解决你的问题,请参考以下文章