GO语言核心30讲 基础知识

devtools/2024/9/25 10:32:42/

原站地址:Go语言核心36讲_Golang_Go语言-极客时间

1. 两种声明变量方式的差异:

    短变量声明 name := "abc" 只能在函数体内部使用。

    var name = "abc" 这方式才可以用在所有地方。

2. 类型推断有什么好处? 代码重构时更方便,只要修改一处定义数据类型的代码,其他位置的数据类型都会自动推断。

3. 变量的重声明是什么?有什么好处? 

var err error
n, err := io.WriteString(os.Stdout, "Hello, everyone!\n")

 err 被声明了两次,这就是重声明。好处是可以重复使用同一个变量名,拷贝代码方便。

4. 重声明 有什么限制条件?

(1) 再次声明时的数据类型不能改变。

(2) 需要使用短变量声明。

(3) 声明并赋值的变量必须有多个,并且至少要有一个是新的变量

5. 具有嵌套关系的不同代码块间,存在重名的变量

(1) 可以编译通过,内层代码块中,会使用内层的变量,屏蔽掉外层的。

(2) 内层和外层的变量是两个独立的变量,所以可以数据类型不同。它们只是名字相同。

(3) 代码运行是,查找变量的顺序是,从内部往外部。

var block = "package"
func main() { block := "function" { block := "inner" } 
}

6. 类型转换: value := []string(变量x)。需要主义的几点:

(1) 整数值、常量之间的类型转换,只要源值在目标类型的可表示范围内就是合法的。

(2) 把整数值转换为string类型是可行的,被转换的整数值需要是有效的 Unicode 代码点,否则转换的结果将会是"�"乱码

(3) string类型向[]byte类型转换,代表着以 UTF-8 编码的字符串会被拆分成字节。

7. 如何正确判断变量的类型:  value, ok := interface{}(变量x).([]string)

    如果类型不匹配的话,ok的值是false。  ok 如果没有的话,当类型不匹配时,会触发panic

8. 声明别名类型的两种方式: 

(1) type MyString = string, 两者完全相等

(2) type MyString2 string (没有等号),两者不同,是两个类型。

     MyString2 和 string 可以进行类型转换,但 []MyString2与[]string 就不能进行类型转换。

9. byte是uint8的别名类型,而rune是int32的别名类型


http://www.ppmy.cn/devtools/21969.html

相关文章

Java23种设计模式-创建型模式之建造者模式

建造者模式(Builder Pattern),也被称为生成器模式,是一种创建型设计模式,主要用于解决复杂对象的构建问题。建造者模式的主要特点是: 1.分离构建与表示:将一个复杂对象的构建与它的表示分离&…

Java基础知识总结(77)

* 2、JMM模型 JMM(Java Memory Model):Java 内存模型,是 Java 虚拟机规范中所定义的一种内存模型,Java 内存模型是标准化的,屏蔽掉了底层不同计算机的区别。也就是说,JMM 是 JVM 中定义的一种并…

AI视频下载:零基础2小时学会开发 Chrome扩展程序

无论您是有抱负的Web开发人员、AI爱好者还是生产力黑客,本课程都提供了宝贵的见解和实践经验,帮助您利用AI和Chrome扩展的力量来简化Web自动化,改善各个行业和领域的用户体验,解锁AI驱动生产力的潜力! 此课程面向以下…

wpf 按钮禁用样式

在WPF中&#xff0c;要为按钮创建一个禁用样式&#xff0c;需要在资源字典中定义一个Style&#xff0c;该样式将应用于Button控件的IsEnabled属性为False时的状态。 以下是一个简单的例子&#xff1a; <Style TargetType"Button" x:Key"NormalButtonStyle&…

使用Go语言和chromedp库下载Instagram图片:简易指南

摘要/导言 本文将介绍如何使用Go语言配合chromedp库来下载Instagram上的图片。我们将通过一个简单的示例来展示整个过程&#xff0c;包括如何设置爬虫代理IP以绕过网络限制。 背景/引言 在数据采集和自动化测试领域&#xff0c;Go语言以其出色的执行效率、简洁的语法和卓越的…

AI大模型探索之路-训练篇3:大语言模型全景解读

文章目录 前言一、语言模型发展历程1. 第一阶段&#xff1a;统计语言模型&#xff08;Statistical Language Model, SLM&#xff09;2. 第二阶段&#xff1a;神经语言模型&#xff08;Neural Language Model, NLM&#xff09;3. 第三阶段&#xff1a;预训练语言模型&#xff08…

Linux多进程(二)进程通信方式一 管道

管道的是进程间通信&#xff08;IPC - InterProcess Communication&#xff09;的一种方式&#xff0c;管道的本质其实就是内核中的一块内存(或者叫内核缓冲区)&#xff0c;这块缓冲区中的数据存储在一个环形队列中&#xff0c;因为管道在内核里边&#xff0c;因此我们不能直接…

Java基础:简单工厂模式、工厂方法模式和抽象工厂模式综合概述

简单工厂模式、工厂方法模式和抽象工厂模式是面向对象设计中用来实现对象创建灵活性的三种不同形式的工厂模式。它们各自有其特点、适用场景及优缺点。以下是它们之间的区别以及对应的适用场景&#xff0c;以及示例说明&#xff1a; 简单工厂模式 定义&#xff1a; 简单工厂模…