Go语言:对其语法的一些见解

按照如下教程写了这样如下两段代码

Return and handle an error - The Go Programming Language

目录

1.初始化一个模块

2.编写代码

3.编写和执行过程中的一些报错提示

4.语法入门经验对比


1.初始化一个模块

bash 复制代码
D:\code\go_code\el>go mod init el
go: creating new go.mod: module el

D:\code\go_code\el>type nul> greet.go

D:\code\go_code\el>type nul> hello.go

go.mod

bash 复制代码
module el

go 1.25.0

!!!经过试验,可以不执行init的命令,可以直接写一个.mod文件,然后编辑内容如上即可

2.编写代码

hello.go

bash 复制代码
package main

import (
  "fmt"
  "log"
)

func main(){
   log.SetPrefix("greetings: ")
   log.SetFlags(0)

   message, err := Hello("Han")
   if err != nil {
      log.Fatal(err)
    }
   
   fmt.Println(message) 
}

2.编写greet.go

bash 复制代码
package main

import (
  "errors"
  "fmt"
)

func Hello(name string) (string, error){
   if name == "" {
       return "", errors.New("empty name")   
    }
   message := fmt.Sprintf("Hi, %v. Welcome", name)
    
   return message, nil 
}

3.编译执行成功的情况

3.编写和执行过程中的一些报错提示

3.1 .\hello.go:16:13: declared and not used: err

就是说如果go语言中的定义变量没有被引用的话,程序编译就会报错

也就是如下内容

3.2 assignment mismatch: 2 variables but Hello returns 1 value

也就是说函数的返回值如果是一个组合,那么组合中间需要逗号隔开,它不像参数类型和名称一样。

3.3 too many return values

也就是说,go语言文件中,要对每个返回的值进行处理,而不能空置。这一点和其他语言还是有区别的,严谨了很多,绝对不会产生废代码,除非你注释掉。

4.语法入门经验对比

1.类似Java 驼峰格式的方法名

2.类似python的可以返回一个元组

3.类似python一样的if 比较表达式 可以不需要括号

4.不理解为什么在等号面前搞一个冒号:这在别的编程语言从没见过,是有什么神奇之处吗

5.返回的一个对象信息,需要进行New创建,这和Java 很像

6.字符列表中的最后一个元素一定要带上逗号 ",",否则会报错

bash 复制代码
.\greet.go:22:33: syntax error: unexpected newline in composite literal; possibly missing comma or }
相关推荐
用户608186527904 分钟前
Avalonia UI 控件样式定义的三种方式详解
后端
hey_sml4 分钟前
MySQL常用操作速记:从字符集到游标全解析
java·开发语言·mysql
广东程序猿小展4 分钟前
《007初露锋芒》风灵月影13项修改器下载 007初露锋芒修改器使用方法
开发语言·javascript·ecmascript
feng尘5 分钟前
volatile 可见性与内存屏障知识点
后端
SamDeepThinking7 分钟前
第3篇:企业级CAS单点登录实战-技术架构设计方案
后端·程序员·架构
JoyT8 分钟前
Agent 开源项目全景解析(上):LangGraph、Spring AI 与 Agent Runtime
后端
云技纵横9 分钟前
线上接口突然超时,怎么判断卡在 Nginx、线程池、连接池还是 SQL?
后端·sql·mysql
Java内核笔记11 分钟前
容错能力进入 spring-core:Spring Boot 4 原生重试机制全解析
java·后端
风卿12 分钟前
知识库双路召回:BM25 关键词与语义向量 RRF 融合,附指标实测
后端
未秃头的程序猿16 分钟前
虚拟线程上线一周后翻车了——pinning问题排查实录
java·后端·架构