zoukankan      html  css  js  c++  java
  • go 指针(interface{},map)

    func testAddDataToResult() {
    	var a map[string]interface{}
    	Println(a, &a)
    	addDataToResult(a, "aa", "bb")
    	Println(a, &a)
    }
    func addDataToResult(result map[string]interface{}, key string, val interface{}) {
    	if result == nil {
    		Println("nil result:", result, &result)
    		result = map[string]interface{}{key: val}
    		//result[key] = val
    		Println("nil result:", result, &result)
    		return
    	}
    	result[key] = val
    	Println("result:", result, &result)
    }
    结果

    map[] &map[]
    nil result: map[] &map[]
    nil result: map[aa:bb] &map[aa:bb]
    map[] &map[]
    	var a map[string]interface{}
    	Println(a, &a)
    	addDataToResult(a, "aa", "bb")
    	Println(a, &a)
    }
    func addDataToResult(result map[string]interface{}, key string, val interface{}) {
    	if result == nil {
    		Println("nil result:", result, &result)
    		//result = map[string]interface{}{key: val}
    		result[key] = val
    		Println("nil result:", result, &result)
    		return
    	}
    	result[key] = val
    	Println("result:", result, &result)
    }
    结果
    map[] &map[]
    nil result: map[] &map[]
    panic: assignment to entry in nil map
    

      

    func testAddDataToResult() {
    	var a = map[string]interface{}{}
    	Println(a, &a)
    	addDataToResult(a, "aa", "bb")
    	Println(a, &a)
    }
    func addDataToResult(result map[string]interface{}, key string, val interface{}) {
    	if result == nil {
    		Println("nil result:", result, &result)
    		//result = map[string]interface{}{key: val}
    		result[key] = val
    		Println("nil result:", result, &result)
    		return
    	}
    	result[key] = val
    	Println("result:", result, &result)
    }
    结果
    map[] &map[]
    result: map[aa:bb] &map[aa:bb]
    map[aa:bb] &map[aa:bb]
    

      

    第一个测试将nil值的map[string]interface{}传到函数,修改后原函数里的值没改变

    第二个测试将nil值的map[string]interface{}传入到函数,直接result[key]=val,panic: assignment to entry in nil map

     第三个测试将不为nil值的map[string]interface{}传入到函数,直接result[key]=val,原函数的map被改变了

    func testAddDataToResult() {
    	var a interface{}
    	Println(a, &a)
    	addDataToResult(a, "aa", "bb")
    	Println(a, &a)
    }
    func addDataToResult(result interface{}, key string, val interface{}) {
    	if result == nil {
    		Println("nil result:", result, &result)
    		result = map[string]interface{}{key: val}
    		Println("nil result:", result, &result)
    		return
    	}
    	result.(map[string]interface{})[key] = val
    	Println("result:", result, &result)
    }
    结果
    <nil> 0xc42000e280
    nil result: <nil> 0xc42000e290
    nil result: map[aa:bb] 0xc42000e290
    <nil> 0xc42000e280
    

      

  • 相关阅读:
    Oracle EBS 配置文件取值
    “嗯...无法访问此页面 尝试此操作.....”的解决方法
    为什么在开发的微信小程序项目里写不上汉字?
    VM1238:2 pages/logs/logs.json 文件解析错误 SyntaxError: Unexpected token / in JSON at position 41....
    allparis工具的使用
    can't open 1.txt at releaseallpairs.pl line 368.
    element.style的样式问题解决方法
    常见的http状态码有哪些,代表什么意思?
    怎样快速修改文件名的后缀
    “该文件没有与之关联的应用来执行操作请安装应用若已安装应用程序请在默认应用设置...”
  • 原文地址:https://www.cnblogs.com/cdyboke/p/7141373.html
Copyright © 2011-2022 走看看