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

简介: Golang学习之路(六):Go+体验分享及字面量讲解

一、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]float{1, 3.4} // []float64
  y := [1]int{1} // []int
  z := [2]interface{}{1+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(&Config{Dir: "/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 &Result{Text: "Hi, Go+"}
}

GO+在线练习地址:https://play.goplus.org/

目录
相关文章
|
18小时前
|
存储 编译器 Go
Go语言学习12-数据的使用
【5月更文挑战第5天】本篇 Huazie 向大家介绍 Go 语言数据的使用,包含赋值语句、常量与变量、可比性与有序性
17 6
Go语言学习12-数据的使用
|
1天前
|
Go
golang学习参考记录
golang学习参考记录
|
1天前
|
JSON Go 数据格式
golang学习7,glang的web的restful接口结构体传参
golang学习7,glang的web的restful接口结构体传参
|
1天前
|
JSON Go 数据格式
golang学习6,glang的web的restful接口传参
golang学习6,glang的web的restful接口传参
|
1天前
|
JSON Go 数据格式
golang学习5,glang的web的restful接口
golang学习5,glang的web的restful接口
|
1天前
|
Go
golang学习4,glang的web接口
golang学习4,glang的web接口
|
1天前
|
Go
golang学习3,golang 项目中配置gin的web框架
golang学习3,golang 项目中配置gin的web框架
|
1天前
|
Go
golang学习2,golang开发配置国内镜像
golang学习2,golang开发配置国内镜像
|
1天前
|
Java Go 开发工具
golang学习1,dea的golang-1.22.0
golang学习1,dea的golang-1.22.0
|
3天前
|
Java Go
Go语言学习11-数据初始化
【5月更文挑战第3天】本篇带大家通过内建函数 new 和 make 了解Go语言的数据初始化过程
17 1
Go语言学习11-数据初始化