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/

目录
相关文章
|
4月前
|
JSON Go 开发者
go-carbon v2.5.0 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持。
85 4
|
4月前
|
数据采集 监控 Java
go语言编程学习
【11月更文挑战第3天】
59 7
|
4月前
|
存储 Cloud Native Shell
go库介绍:Golang中的Viper库
Viper 是 Golang 中的一个强大配置管理库,支持环境变量、命令行参数、远程配置等多种配置来源。本文详细介绍了 Viper 的核心特点、应用场景及使用方法,并通过示例展示了其强大功能。无论是简单的 CLI 工具还是复杂的分布式系统,Viper 都能提供优雅的配置管理方案。
110 6
|
4月前
|
Unix Linux Go
go进阶编程:Golang中的文件与文件夹操作指南
本文详细介绍了Golang中文件与文件夹的基本操作,包括读取、写入、创建、删除和遍历等。通过示例代码展示了如何使用`os`和`io/ioutil`包进行文件操作,并强调了错误处理、权限控制和路径问题的重要性。适合初学者和有经验的开发者参考。
|
4月前
|
设计模式 测试技术 Go
学习Go语言
【10月更文挑战第25天】学习Go语言
43 4
|
6月前
|
编译器 Go
go语言学习记录(关于一些奇怪的疑问)有别于其他编程语言
本文探讨了Go语言中的常量概念,特别是特殊常量iota的使用方法及其自动递增特性。同时,文中还提到了在声明常量时,后续常量可沿用前一个值的特点,以及在遍历map时可能遇到的非顺序打印问题。
|
5月前
|
安全 Java Go
【Golang入门】简介与基本语法学习
Golang语言入门教程,介绍了Go语言的简介、基本语法、程序结构、变量和常量、控制结构、函数、并发编程、接口和类型、导入包、作用域以及错误处理等关键概念,为初学者提供了一个全面的学习起点。
149 0
|
6月前
|
Go
golang语言之go常用命令
这篇文章列出了常用的Go语言命令,如`go run`、`go install`、`go build`、`go help`、`go get`、`go mod`、`go test`、`go tool`、`go vet`、`go fmt`、`go doc`、`go version`和`go env`,以及它们的基本用法和功能。
151 6
|
6月前
|
存储 Go
Golang语言基于go module方式管理包(package)
这篇文章详细介绍了Golang语言中基于go module方式管理包(package)的方法,包括Go Modules的发展历史、go module的介绍、常用命令和操作步骤,并通过代码示例展示了如何初始化项目、引入第三方包、组织代码结构以及运行测试。
163 3
|
6月前
|
Go
Golang语言基础之常量和字面量
这篇文章讲解了Go语言中常量和字面量的概念、声明方式以及使用场景,特别对常量生成器iota的使用进行了详细说明和示例演示。
57 2

热门文章

最新文章