当前位置: 首页 > news >正文

go 语言程序设计第2章--程序结构

2.1 名称

如果一个实体在函数中声明,它只在函数局部有效。如果声明在函数外,它将对包里面所有源文件可见。
实体第一个字母的大小写决定其可见性是否跨包。如果名称以大写字母开头,它是导出的,意味着它对包外是可见和可访问的。包名本身总是由小写字母组成。

2.2 声明

有4个主要的声明:变量(var), 常量(const), 类型(type)和函数(func)

2.3 变量

var name type = expression

2.3.1 短变量的声明

name := expression

短变量声明最少声明一个新变量
f, err := os.Open(infile)
//…
f, err := os.Create(outfile) // 编译错误:没有新的变量

:= 是声明
= 是赋值

2.3.2 指针

不是所有的值都有地址,但是所有的变量都有。

x := 1
p := &x
fmt.Println(*p) // “1”
*p = 2 // 等于 x=2
fmt.Println(x)

2.3.3 new 函数

表达式 new(T) 创建一个未命名的 T 类型变量,初始化为 T 类型的零值,并返回其地址。

p := new(int)

2.3.4 变量的生命周期

编译器可以选择使用堆和栈上的空间来分配内存,这个选择不是基于使用 var 或 new 关键字来声明变量。

2.4 赋值

2.4.1 多重赋值

x,y = y, x // 交换变量

f, err = os.Open(“foo.txt”)
v, ok = m[k] // map 查询
v, ok = x.(T) // 类型断言
v, ok = <- ch //通道接收

2.4.2 可赋值性

赋值语句是显示赋值,有很多地方的赋值是隐式的:一个函数调用隐式的将参数的值赋给对应的参数的变量;一个 return 语句隐式的将 return 操作数赋值给结果变量。复合类型的字面量表的式,如 slice

medals := []string{"gold", "silver", "bronze"}

隐式的给每一个元素赋值,它可以写成下面这样:

medals[0] = "gold"
medals[1] = "silver"
medals[2] = "bronze"

可赋值性规则:类型必须精准匹配,nil 可以被赋给任何接口变量或引用类型。

两个值使用 == 和 != 进行比较与可赋值性相关:任何比较中,第一个操作数相对第二个操作数的类型必须是可赋值的,或者可以反过来赋值。

2.5 类型声明

type Celsius float64
type Fahrenheit float64
var c Celsius
var f Fahrenheit
fmt.Println(c == 0) // "true"
fmt.Println(f >= 0) // "true"
fmt.Println(c == f) // 编译错误: 类型不匹配
fmt.Println(c == Celsius(f)) // "true"

下面的声明中, Celsium 参数 c 出现在函数名字前面,名字叫 String 的方法关联到 Celsius 类型。

func (c Celsius) String() string { return fmt.Sprintf("%g Celsius", c)}fmt.Println(c.String())

2.6 包和文件

每个包给它的声明提供独立的命名空间。

2.6.1 导入

导入不用的包会编译错误。

2.6.2 包初始化

包的初始化从初始化包级别的变量开始,这些变量按照声明顺序初始化,在依赖已解析完毕的情况下,根据依赖的顺序进行。

init 函数的机制。任意文件可以包含任意数量的声明如下的函数:
func init() {}
这个 init 函数不能被调用和被引用。如果p导入了包q,可以确保 q 在 p 之前已完全初始化,main 包最后初始化。

2.7 作用域

一个声明的词法块决定声明的作用域大小。像 int, len 和 true 等内置类型、函数或者常量在全局块中声明并且对整个程序可见。在包级别级的声明,可以被同一个包里的任何文件引用。导入的包是文件级别的,所以它们可以在同一个文件内引用,但是不能在没有另一个 import 的前提下被同一个包中其他文件引用。

不是所有的词法块都对应于显示大括号包围的语句序列,有一些词法块是隐式的。 for 循环创建了两个词法块:一个是循环本身的显式块,以及一个隐式块。隐式块包含初始化语句,判断条件,后置语句(i++).i++).

相关文章:

go 语言程序设计第2章--程序结构

2.1 名称 如果一个实体在函数中声明&#xff0c;它只在函数局部有效。如果声明在函数外&#xff0c;它将对包里面所有源文件可见。 实体第一个字母的大小写决定其可见性是否跨包。如果名称以大写字母开头&#xff0c;它是导出的&#xff0c;意味着它对包外是可见和可访问的。包…...

JavaScript基础知识点总结:从零开始学习JavaScript(五)

如果大家感感兴趣也可以去看&#xff1a; &#x1f389;博客主页&#xff1a;阿猫的故乡 &#x1f389;系列专栏&#xff1a;JavaScript专题栏 &#x1f389;ajax专栏&#xff1a;ajax知识点 &#x1f389;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 学习…...

Intel FPGA 技术开放日

概要 时间&#xff1a;2023.11.14 全天 &#xff08; 9:00 - 16: 20&#xff09; 地点&#xff1a;北京望京. 凯悦酒店 主题内容&#xff1a;分享交流了Intel FPGA 产品技术优势和落地实践方案。 会议的议程 开场致词&#xff1a; FPGA业务&#xff0c;是几年前intel收购而…...

分享72个Python爬虫源码总有一个是你想要的

分享72个Python爬虫源码总有一个是你想要的 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 链接&#xff1a;https://pan.baidu.com/s/1v2P4l5R6KT2Ul-oe2SF8cw?pwd6666 提取码&#xff1a;6666 项目名称 10 photo websites…...

Mybatis 动态 SQL - foreach

动态SQL的另一个常见需求是需要迭代一个集合&#xff0c;通常用于构建IN条件。例如&#xff1a; <select id"selectPostIn" resultType"domain.blog.Post">SELECT *FROM POST P<where><foreach item"item" index"index&quo…...

编程笔记 GOLANG基础 001 为什么要学习Go语言

编程笔记 GOLANG基础 001 为什么要学Go语言 一、推荐学习的计算机程序设计语言&#xff08;一&#xff09;、前端设计与编程&#xff1a;htmlcssjavascripttypescript&#xff08;二&#xff09;、C/C语言&#xff08;三&#xff09;、Go语言&#xff08;四&#xff09;、Pytho…...

OrientDB使用教程:全面了解图数据库

图数据库在当今数据处理领域中扮演着越来越重要的角色&#xff0c;而OrientDB作为一种多模型的数据库&#xff0c;具有图数据库、文档数据库和对象数据库的特性&#xff0c;为应对不同场景提供了灵活的解决方案。本教程将简要介绍OrientDB的使用&#xff0c;包括基本概念、安装…...

VMware安装笔记

1、首先准备安装文件 没有的小伙伴可以网上自行下载&#xff0c;或者给我留言&#xff0c;我发给你。 2、开始安装 2.1、双击运行exe安装文件&#xff0c;下一步 2.2、接受许可&#xff0c;下一步 2.3、选择安装路径 2.4、选择好安装路径后&#xff0c;继续下一步 2.5、取消勾…...

MIT线性代数笔记-第27讲-复数矩阵,快速傅里叶变换

目录 27.复数矩阵&#xff0c;快速傅里叶变换打赏 27.复数矩阵&#xff0c;快速傅里叶变换 对于实矩阵而言&#xff0c;特征值为复数时&#xff0c;特征向量一定为复向量&#xff0c;由此引入对复向量的学习 求模长及内积 假定一个复向量 z ⃗ [ z 1 z 2 ⋮ z n ] \vec{z} \…...

三维点通用排序

前言 NWAFU 2021阶段二 C 一、题目描述 题目描述 在三维笛卡尔坐标系中&#xff0c;可以用X,Y,Z三个坐标分量表示三维空间中的一个点。现有一系列用X,Y,Z表示的三维点&#xff0c;需要对其按指定的X、Y或Z分量进行升序或降序排序。请用C语言实现这一排序过程&#xff0c;程序…...

[架构之路-265]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 如何做好详细设计

目录 一、详细设计概述 1.1 什么是详细设计 1.2 软件概要设计、软件架构、软件详细设计比较 二、软件详细设计说明书 2.1 概述 2.2 撰写步骤 2.3 主要内容 三、详细设计详解 3.1 引言 3.2 系统架构设计 3.3 模块设计 3.3.1 模块描述 3.3.2 模块间接口设计与UML图 …...

java设计模式学习之【模板方法模式】

文章目录 引言模板方法模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用游戏设计示例代码地址 引言 设想你正在准备一顿晚餐&#xff0c;无论你想做意大利面、披萨还是沙拉&#xff0c;制作过程中都有一些共同的步骤&#xff1a;准备原料、加工食物、摆盘。…...

篇章二 | Python 入门指南:深入理解基础数据类型

Python 是一门强大而易学的编程语言&#xff0c;而深刻理解其基础数据类型是掌握 Python 编程的重要一步。本入门指南将详细介绍 Python 中的基础数据类型&#xff0c;包括整数、浮点数、字符串、布尔值、列表、元组、字典和集合等&#xff0c;同时提供注意事项和与 C 语言的区…...

循环冗余效验码的计算方法

循环冗余效验码的计算方法 G&#xff08;x&#xff09;&#xff1a; 在了解计算方法之前我们首先要明白G&#xff08;x&#xff09;表明的意思&#xff0c;这一步非常重要&#xff01; 例如&#xff0c;G&#xff08;x&#xff09; x^3 x^2 1 &#xff0c;该式子表明的编…...

第P8周:YOLOv5-C3模块实现

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/rbOOmire8OocQ90QM78DRA) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制](https://mtyjkh.blog.csdn.net/)** 一、 前期准备 1. 设…...

Java中常见的日志包分析(Log4j、Logback、SLF4J等)

Java中常见的日志jar包包括Log4j、Logback、SLF4J、java.util.logging等。它们各自的作用和应用场景如下&#xff1a; 1. Log4j 作用&#xff1a;Log4j是Apache的一个开源项目&#xff0c;提供日志记录的功能&#xff0c;支持多种输出目的地&#xff0c;如控制台、文件、GUI组…...

C++系列-第1章顺序结构-3-输出类cout

C系列-第1章顺序结构-3-输出类cout 在线练习&#xff1a; http://noi.openjudge.cn/ https://www.luogu.com.cn/ 总结 本文是C系列博客&#xff0c;主要讲述输出类cout的用法 cout介绍与基本用法 在C中&#xff0c;cout 是用于输出&#xff08;打印&#xff09;数据的工具&…...

对于智能设备的一些设想1

最近发现脑子里经常会出现一些能够偷懒的想法&#xff0c;希望这些点子能一点点保存下来&#xff0c;希望有需要的人拿走点子&#xff0c;不用谢 1.泡脚桶 2023年12月28日 近两年泡脚桶的风着实很大&#xff0c;我差点也就入坑了&#xff0c;于是有了一种设想&#xff0c;为什么…...

Large-Precision Sign using PBS

参考文献&#xff1a; [CLOT21] Chillotti I, Ligier D, Orfila J B, et al. Improved programmable bootstrapping with larger precision and efficient arithmetic circuits for TFHE[C]//Advances in Cryptology–ASIACRYPT 2021: 27th International Conference on the T…...

【电商项目实战】MD5登录加密及JSR303自定义注解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《电商项目实战》。&#x1f3af;&#x1f3af; &am…...

2014,TEVC,A competitive swarm optimizer for large scale optimization(CSO)

PSO 分析&#xff08;从而引入 CSO&#xff09; CSO (competitive swarm optimizer) 算法是在PSO (particle swarm optimization) 算法的基础上改进而来的。PSO算法是一种功能强大、应用广泛的群体智能算法&#xff0c;主要用来解决优化问题。PSO算法包含一个粒子群&#xff0…...

【机器学习】【线性回归】梯度下降

文章目录 [toc]数据集实际值估计值估计误差代价函数学习率参数更新Python实现导包数据预处理迭代过程数据可视化完整代码 线性拟合结果代价结果 个人主页&#xff1a;丷从心 系列专栏&#xff1a;机器学习 数据集 ( x ( i ) , y ( i ) ) , i 1 , 2 , ⋯ , m \left(x^{(i)} , …...

JMeter逻辑控制器之While控制器

JMeter逻辑控制器之While控制器 1. 背景2.目的3. 介绍4.While示例4.1 添加While控制器4.2 While控制器面板4.3 While控制器添加请求4.3 While控制器应用场景 1. 背景 存在一些使用场景&#xff0c;比如&#xff1a;某个请求必须等待上一个请求正确响应后才能开始执行。或者&…...

记录 Docker 外部访问的基本操作

目录 1. 启动 docker 时挂载本地目录2. 外部访问 docker 容器 (-p/-P)3. 无法连接 docker 内 SSH 解决方案 1. 启动 docker 时挂载本地目录 # 将本地 D:/SDK 目录 挂载到 容器里的 /mnt/host 目录中 # 注意&#xff1a;-v /d/SDK:/mnt/host/ 必须放到 IMAGE_ID 前面才行 # …...

【Android 13】使用Android Studio调试系统应用之Settings移植(六):BannerMessagePreference

文章目录 一、篇头二、系列文章2.1 Android 13 系列文章2.2 Android 9 系列文章2.3 Android 11 系列文章三、BannerMessagePreference的移植3.1 新的问题:找不到 R.dimen.settingslib_preferred_minimum_touch_target3.2 问题分析(一)3.2.1 资源定义的位置3.2.2 检查依赖3.2…...

Python 变量

打印输出内容 print(‘rumenle’) print(‘haode’) 缩进需要tab 注释将需要注释的部分开头用# 多行注释 1、用你也可以左键选中我们需要注释的代码&#xff0c;松开&#xff0c;按&#xff1a;Ctrl/&#xff0c;就完成相同效果注释 2、把要注释的内容放到三个引号对里面 …...

ComfyUI如何中文汉化

comfyui中文地址如下&#xff1a; https://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Translationhttps://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Translation如何安装&#xff1f; 1. git安装 进入项目目录下的custom_nodes目录下&#xff0c;然后进入控制台&#xff0c;运…...

Glary Utilities Pro - 电脑系统优化全面指南:详尽使用教程

软件简介&#xff1a; Glary Utilities Pro 是一款全面的电脑优化工具&#xff0c;它旨在帮助用户提升计算机的性能和稳定性。这款软件提供了多种功能&#xff0c;包括系统清理、优化、修复以及保护。通过一键扫描&#xff0c;它可以识别并清除无用文件、临时数据、注册表错误等…...

1.4分页和排序

排序&#xff1a; -- 分页(limit)和排序(order by) -- 排序&#xff1a;升序ASC,降序DESC -- ORDER BY 通过字段排序&#xff0c;怎么排 -- 查询的结果根据成绩降序&#xff0c;升序 SELECT s.studentno,studentname,sub.subjectname,studentresult FROM student s RIGHT JO…...

Modbus转Profinet,不会编程也能用!轻松快上手!

Modbus转Profinet是一种用于工业自动化领域的通信协议转换器&#xff0c;可以将Modbus协议转换为Profinet协议&#xff0c;实现设备之间的数据交换与通信。这个工具的使用非常简单&#xff0c;即使没有编程经验的人也可以轻松上手。即使不会编程的人也可以轻松快速上手使用Modb…...

营口网站制作/赤峰seo

在Windows 10 本地搭建 TensorFlow(CPU)深度学习环境&#xff0c;相对TensorFlow GPU版本而言&#xff0c;比较简单。我们先从简单的环境开始。1. 安装 Anaconda 开发环境在开始安装TensorFlow 之前&#xff0c;建议先参考如下文章&#xff0c;在本地安装Anaconda 开发环境。Py…...

南京响应式网站制作/网络营销推广论文

if True: x 15 print(x)print(x) # 可见 if 语句&#xff0c;不是一个代码块&#xff0c;因为代码块有独立的作用域&#xff0c;代码块结束时&#xff0c;会释放变量l1 [1,2,3,4]print(id(l1))l2 [1]print(id(l2))def func4(li): return li[:2] # 如果能够切片…...

用文字写美食个人网站设计作品/网站做seo教程

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2022年低压电工理论题库是低压电工全部考试题库全真模拟题&#xff01;2022年低压电工考试题模拟考试题库模拟考试平台操作根据低压电工考试大纲。低压电工考试资料通过安全生产模拟考试一点通上提前检验学习成果。 1…...

服装外贸流程/长沙seo 优化选智投未来no1

1. 前言 本文讲解自注意力机制&#xff08;Self-Attention&#xff09;。 本人全部文章请参见&#xff1a;博客文章导航目录 本文归属于&#xff1a;自然语言处理系列 本系列实践代码请参见&#xff1a;我的GitHub 前文&#xff1a;注意力机制&#xff08;Attention&#xff0…...

佛山建设外贸网站/情感网站seo

K, A, N, C, E题目中代表&#xff0c;且&#xff0c;或&#xff0c;非&#xff0c;C不知道叫什么&#xff0c;但是根据题中给的表如果w为0&#xff0c;x为1就是0&#xff0c;否则就是1&#xff0c;E代表是否相等&#xff0c;相等就是1&#xff0c;p&#xff0c;q&#xff0c;r&…...

北京建站模板源码/百度一下百度官网

配置中心在现实的Coding工作中&#xff0c;我们是否会遇到这样的问题&#xff0c;我们本地开发环境会用到一套配置参数和配置文件&#xff0c;测试环境会用到另一套配置参数和配置文件&#xff0c;然而项目打包发布时又会用到一套配置参数和配置文件。由于考虑到信息安全的重要…...