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=11就是字面量;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类型字面量的主要内容,如果未能解决你的问题,请参考以下文章

Golang 什么叫字面量和组合字面量?

Golang学习之路:Go+体验分享及字面量讲解

Golang创建构造函数的方法详解

Golang 中哪些值是不可以寻址的

字面量

0105 字面量 (copy)