golang-101-hacks(12)——切片作为函数参数传递

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang-101-hacks(12)——切片作为函数参数传递相关的知识,希望对你有一定的参考价值。

参考技术A 注:本文是对 golang-101-hacks 中文翻译。
在Go语言中,函数参数是值传递。使用slice作为函数参数时,函数获取到的是slice的副本:一个指针,指向底层数组的起始地址,同时带有slice的长度和容量。既然各位熟知数据存储的内存的地址,现在可以对切片数据进行修改。让我们看看下面的例子:
In Go, the function parameters are passed by value. With respect to use slice as a function argument, that means the function will get the copies of the slice: a pointer which points to the starting address of the underlying array, accompanied by the length and capacity of the slice. Oh boy! Since you know the address of the memory which is used to store the data, you can tweak the slice now. Let's see the following example:

运行结果如下

由此可见,执行modifyValue函数,切片s的元素发生了变化。尽管modifyValue函数只是操作slice的副本,但是任然改变了切片的数据元素,看另一个例子:
You can see, after running modifyValue function, the content of slice s is changed. Although the modifyValue function just gets a copy of the memory address of slice's underlying array, it is enough!
See another example:

The result is like this:

而这一次,addValue函数并没有修改main函数中的切片s的元素。这是因为它只是操作切片s的副本,而不是切片s本身。所以如果真的想让函数改变切片的内容,可以传递切片的地址:
This time, the addValue function doesn't take effect on the s slice in main function. That's because it just manipulate the copy of the s, not the "real" s.
So if you really want the function to change the content of a slice, you can pass the address of the slice:

运行结果如下

如何使 Google Maps 半透明 PNG 切片图层在 IE8 中工作?

【中文标题】如何使 Google Maps 半透明 PNG 切片图层在 IE8 中工作?【英文标题】:How to make a Google Maps semi-transparent PNG tile layer work in IE8? 【发布时间】:2011-01-02 12:05:27 【问题描述】:

我尝试了以下

new GTileLayer(null, _minZoom, _maxZoom,  isPng: true, opacity: 0.6 );

但在 IE8 中,虽然 alpha 不透明度有效,但 PNG 中已经具有半透明的像素显示为灰色和标准不透明度。

我还注意到,包含 alpha 透明度且其透明度未被 HTML 样式设置修改的 PNG 文件在 IE8 中表现良好,只有当 PNG alpha 透明度和 HTML alpha 透明度应用于同一图像时才会出现问题。

【问题讨论】:

【参考方案1】:

这绝对是一个众所周知的错误 - 请参阅 hereherehere。只是抛出几个链接:

This blog 提供了一种使用 IE 特定技术的解决方法。 This blog 对解决方法有一个冗长的解释。

然后this 解决了 IE8 早期版本中可能存在的不同错误。他通过放大图像解决了这个问题 - 如果您使用的是 1x1 图像,也许值得一试。

也许您可以通过使用具有不同不透明度且没有 CSS 不透明度的不同 png 来解决此问题?

【讨论】:

以上是关于golang-101-hacks(12)——切片作为函数参数传递的主要内容,如果未能解决你的问题,请参考以下文章

qgis中加载矢量切片

qgis中加载矢量切片

qgis中加载矢量切片

qgis中加载矢量切片

Python 切片

Python NumPy - 3D 数组的角度切片