获得徽章 0
- #青训营 x 字节后端训练营#
Go语言中的函数传参都是值拷贝,当我们想要修改某个变量的时候,我们可以创建一个指向该变量地址的指针变量。传递数据使用指针,而无须拷贝数据。类型指针不能进行偏移和运算。Go语言中的指针操作非常简单,只需要记住两个符号:&(取地址)和*(根据地址取值)。
指针地址和指针类型
每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置。Go语言中使用&字符放在变量前面对变量进行“取地址”操作。 Go语言中的值类型(int、float、bool、string、array、struct)都有对应的指针类型,如:*int、*int64、*string等。展开评论点赞 - #青训营 x 字节后端训练营#
在 Go 中,与 C 数组变量隐式作为指针使用不同,Go 数组是值类型,赋值和函数传参操作都会复制整个数组数据。
func main() {
arrayA := [2]int{100, 200}
var arrayB [2]int
arrayB = arrayA
fmt.Printf("arrayA : %p , %v\n", &arrayA, arrayA)
fmt.Printf("arrayB : %p , %v\n", &arrayB, arrayB)
testArray(arrayA)
}
func testArray(x [2]int) {
fmt.Printf("func Array : %p , %v\n", &x, x)
}展开评论点赞 - #青训营 x 字节后端训练营#
方法定义:
func (recevier type) methodName(参数列表)(返回值列表){}
参数和返回值可以省略
举个例子:
package main
import (
"fmt"
)
//结构体
type User struct {
Name string
Email string
}
//方法
func (u User) Notify() {
fmt.Printf("%v : %v \n", u.Name, u.Email)
}
func main() {
// 值类型调用方法
u1 := User{"golang", "golang@golang.com"}
u1.Notify()
// 指针类型调用方法
u2 := User{"go", "go@go.com"}
u3 := &u2
u3.Notify()
}展开评论点赞 - #青训营 x 字节后端训练营#
切片:
1. 切片:切片是数组的一个引用,因此切片是引用类型。但自身是结构体,值拷贝传递。
2. 切片的长度可以改变,因此,切片是一个可变的数组。
3. 切片遍历方式和数组一样,可以用len()求长度。表示可用元素数量,读写操作不能超过该限制。
4. cap可以求出slice最大扩张容量,不能超出数组限制。0 <= len(slice) <= len(array),其中array是slice引用的数组。
5. 切片的定义:var 变量名 []类型,比如 var str []string var arr []int。
6. 如果 slice == nil,那么 len、cap 结果都等于 0。展开评论点赞 - #青训营 x 字节后端训练营#
数据库设计思路
1. 用户信息的基本属性:该用户表包含了用户的基本属性,包括用户名、用户账号、用户密码、用户电话、用户邮箱、用户状态、用户角色等。这些属性可以用于对用户进行基本的身份验证和管理。
2. 用户信息的补充属性:该用户表还包含了一些补充属性,例如用户昵称、用户头像、用户性别等。这些属性可以丰富用户的信息,提高用户体验,但也需要注意这些属性是否为必填项,以及如何保护用户的隐私。
3. 用户状态的设计:该用户表设计了用户状态字段,可以表示用户的状态,例如是否被锁定、是否被禁用等。这样可以方便对用户进行管理和维护。
4. 用户角色的设计:该用户表还设计了用户角色字段,可以表示用户的角色,例如普通用户、管理员、超级管理员等。这样可以方便对用户权限进行控制,实现更精细的权限控制。
5. 时间戳的设计:该用户表设计了创建时间和更新时间两个字段,分别记录用户数据的创建时间和最后一次更新时间。这样可以方便对用户数据的管理和维护。展开评论点赞 - #青训营 x 字节后端训练营#
ip地址和mac地址的区别
1. 层次不同:IP地址是网络层(第三层)协议中的地址,用于标识网络上的设备;而MAC地址是数据链路层(第二层)协议的地址,用于标识网络上的网卡。
2. 地址类型不同:IP地址是一个32位或128位的数字地址,通常使用点分十进制表示法或冒号十六进制表示法;而MAC地址是一个48位的二进制地址,通常使用十六进制表示法。
3. 分配方式不同:IP地址由网络管理员进行配置和管理,通过互联网号码分配机构(IANA)和互联网服务提供商(ISP)进行分配;而MAC地址由设备厂商预设,不可更改。
4. 使用场景不同:在网络通信中,IP地址通常用于标识网络上的设备,确定数据包的目的地以及路由选择等;而MAC地址通常用于直接通信和数据帧的发送和接收。
5. 协议不同:IP地址是互联网协议(IP)的一部分,支持不同的协议和服务,如TCP、UDP、HTTP等;而MAC地址是数据链路层协议的一部分,用于实现数据帧的发送和接收。展开评论点赞