zoukankan      html  css  js  c++  java
  • go语言学习十四

    package main
    
    import "fmt"
    
    func main() {
    
    	y := []int{1, 2, 3, 4, 5}
    
    	// slice 是传引用的,对内容的修改会影响到函数外,但是 append 不会影响到函数外
    	changeRef(y)
    	fmt.Println(y) //[100,2,3,4,5]
    
    	//取引用变量的地址传入指针实现 append 可以在函数内部修改,说明引用和指针确实不是同一个概念
    	appendPoint(&y)
    	fmt.Println(y)
    
    	z := [5]int{1, 2, 3, 4, 5}
    	// 数组是传值的,对内容的修改不会影响到函数外
    	changeArray(z)
    	fmt.Println(z) //[1,2,3,4,5]
    }
    
    func changeRef(x []int) {
    
    	x[0] = 100
    	// 这里 对函数外没有影响
    	x = append(x, 6, 7, 8) //但是 append 的设计比较奇怪,他返回一个新的引用,由于函数对引用的(地址)仍然是传值的,若想改变必须用返回值实现
    	//同时 引用又不是一个指针 无法直接修改该地址处的值
    }
    
    func changeArray(x [5]int) {
    	x[0] = 100
    }
    
    func appendPoint(x *[]int) {
    	*x = append(*x, 4, 5, 6)
    }
    
  • 相关阅读:
    STM32的DMA
    STM32 入门之 GPIO (zhuan)
    CRC校验码 代码
    actan函数 查表法
    UART 和 USART 的区别
    STM32的NVIC理解
    STM32_adc
    STM 32 can 实例代码
    在Visual C#中调用API的基本过程
    贴片电阻阻值标识
  • 原文地址:https://www.cnblogs.com/scala/p/9592891.html
Copyright © 2011-2022 走看看